import pandas as pd
import os

def analyze_uids():
    """分析Study Instance UID和Series Instance UID的作用"""
    
    # 读取处理后的数据
    clinical_data = pd.read_csv('./preprocessed/clinical_data.csv')
    
    print("=== UID字段分析 ===")
    print(f"总数据行数: {len(clinical_data)}")
    print(f"唯一患者数: {clinical_data['Patient ID'].nunique()}")
    print(f"唯一Study Instance UID数: {clinical_data['Study Instance UID'].nunique()}")
    print(f"唯一Series Instance UID数: {clinical_data['Series Instance UID'].nunique()}")
    
    print("\n=== 层级关系分析 ===")
    
    # 分析患者-Study的关系
    patient_study_counts = clinical_data.groupby('Patient ID')['Study Instance UID'].nunique()
    print(f"每个患者的平均Study数: {patient_study_counts.mean():.2f}")
    print(f"每个患者的Study数范围: {patient_study_counts.min()} - {patient_study_counts.max()}")
    
    # 分析Study-Series的关系
    study_series_counts = clinical_data.groupby('Study Instance UID')['Series Instance UID'].nunique()
    print(f"每个Study的平均Series数: {study_series_counts.mean():.2f}")
    print(f"每个Study的Series数范围: {study_series_counts.min()} - {study_series_counts.max()}")
    
    print("\n=== 示例数据 ===")
    # 显示一个患者的数据作为示例
    sample_patient = clinical_data['Patient ID'].iloc[0]
    sample_data = clinical_data[clinical_data['Patient ID'] == sample_patient]
    
    print(f"患者 {sample_patient} 的数据:")
    for _, row in sample_data.head(5).iterrows():
        print(f"  Study UID: {row['Study Instance UID'][:50]}...")
        print(f"  Series UID: {row['Series Instance UID'][:50]}...")
        print(f"  Study Date: {row['Study Date']}")
        print(f"  Series Description: {row['Series Description']}")
        print(f"  Modality: {row['Modality']}")
        print("  ---")
    
    print("\n=== 建议 ===")
    print("1. Study Instance UID: 标识一个完整的医学影像检查，包含多个序列")
    print("2. Series Instance UID: 标识检查中的一个特定序列（如CT的不同层面）")
    print("3. 这两个字段主要用于:")
    print("   - 数据组织和索引")
    print("   - 确保数据的唯一性")
    print("   - 医学影像系统的数据管理")
    print("4. 对于机器学习模型，这些字段通常不直接用于特征，但可以用于:")
    print("   - 数据去重")
    print("   - 按检查分组")
    print("   - 确保训练/验证/测试集的数据独立性")

if __name__ == '__main__':
    analyze_uids() 